package com.humngyang.com.hmy.study.concurrency.myannoations.pushObject;

import com.humngyang.com.hmy.study.concurrency.myannoations.ThreadUnSafe;
import com.humngyang.com.hmy.study.concurrency.myannoations.UnRecommend;


//单例模式只懒汉模式线程不安全的,使用sychronized关键字能够保证线程安全，但是我们不推荐的，因为会造成性能的开销。
@ThreadUnSafe
@UnRecommend
public class SingletonExample1 {
    //构造方法私有化,不允许外面的方法直接调用
    private SingletonExample1(){}
    //定义一个单例对象
    private static SingletonExample1 instance = null;

    //单线程的时候。这个方法没有问题，但是多线程的时候，可能同时两个线程同时进入，都是为空，然后导致创建了两个实例对象。
    private static synchronized SingletonExample1 getInstance(){
        if (instance == null){
            instance = new SingletonExample1();
        }
        return instance;
    }
}
